/**
 * Copyright (c) 2004-2015 All Rights Reserved.
 */
package com.zbest.component.session;

import java.util.Enumeration;

/**
 * 钱滚滚session的存储接口，可以提供多种实现，目前只有使用redis的存储方案
 *
 * @author czhou3306@gmail.com
 * @version $Id: QianSession.java, v0.1 2015年6月9日 上午9:57:17 czhou3306@gmail.com Exp $
 */
public interface QianSession {

    /**
     * 获取创建时间
     * 
     * @return
     */
    public long getGmtCreate();

    /**
     * 获取sessionid
     * 
     * @return
     */
    public String getSessionId();

    /**
     * 获取最后一次访问时间
     * 
     * @return
     */
    public long getGmtLastAccess();

    /**
     * 设置最大的超时时间
     * 
     * @param interval
     */
    public void setMaxInactiveInterval(int interval);

    /**
     * 获取最大的超时时间
     * 
     * @return
     */
    public int getMaxInactiveInterval();

    /**
     * 获取指定的属性
     * 
     * @param name
     * @return
     */
    public Object getAttribute(String name);

    /**
     * 获取属性的值
     * 
     * @param name
     * @return
     */
    public Object getValue(String name);

    /**
     * 获取所有的属性名数组
     * 
     * @return
     */
    public Enumeration<String> getAttributeNames();

    /**
     * 获取所有的属性名数组
     * 
     * @return
     */
    public String[] getValueNames();

    /**
     * 设置属性
     * 
     * @param name
     * @param value
     */
    public void setAttribute(String name, Object value);

    /**
     * 增加属性
     * 
     * @param name
     * @param value
     */
    public void putValue(String name, Object value);

    /**
     * 删除属性
     * 
     * @param name
     */
    public void removeAttribute(String name);

}
